package xaj.puiatti.ast;

import java.util.List;

import polyglot.ast.Expr;
import polyglot.lex.Identifier;
import polyglot.types.Flags;
import polyglot.util.Position;
import abc.aspectj.ast.AdviceSpec;
import abc.aspectj.ast.Pointcut;
import xaj.scc.ast.SCNodeFactory_c;

public class PuiattiNodeFactory_c extends SCNodeFactory_c implements
		PuiattiNodeFactory {

	public xaj.puiatti.ast.NamedAdviceDecl NamedAdviceDecl(Position pos,
			Identifier ident, Flags flags, AdviceSpec spec, List throwTypes,
			Pointcut pc, polyglot.ast.Block body) {
		return new NamedAdviceDecl_c(pos, ident, flags, spec, throwTypes, pc, body);
	}

	public xaj.puiatti.ast.PCRule PCRule(Position pos,
            Identifier id1, Identifier id2, RuleCond rc, DeclRuleBody b) {
		return new PCRule_c(pos, id1, id2, rc, b);
	}

	public xaj.puiatti.ast.RuleCond RuleCond(Position pos,List pa, Condic c) {
		return new RuleCond_c(pos, pa, c);
	}

    public xaj.puiatti.ast.Condic Condic(Position pos, Expr expr) {
		return new Condic_c(pos, expr);
	}

    public xaj.puiatti.ast.DeclRuleBody DeclRuleBody(Position pos, List m) {
		return new DeclRuleBody_c(pos, m);
	}

    public xaj.puiatti.ast.BlockRule BlockRule(Position pos) {
		return new BlockRule_c(pos);
	}

    public xaj.puiatti.ast.Prec Prec(Position pos, Identifier id1, Identifier id2) {
		return new Prec_c(pos, id1, id2);
	}

    public xaj.puiatti.ast.Ignore Ignore(Position pos, Identifier id1) {
		return new Ignore_c(pos, id1);
	}

    public xaj.puiatti.ast.Last Last(Position pos, Identifier id1) {
		return new Last_c(pos, id1);
	}

    public xaj.puiatti.ast.First First(Position pos, Identifier id1) {
		return new First_c(pos, id1);
	}
}
